// main.js
const isDev = process.env.NODE_ENV === 'development'

// 控制应用生命周期和创建原生浏览器窗口的模组
const { app, BrowserWindow, globalShortcut, session } = require('electron')
const path = require('node:path')
const DesktopCapture = require("./controller/DesktopCapture");
const Config = require("./config/Config");
const CaptureTool = require("./win/CaptureTool");

function createWindow () {
    // 创建浏览器窗口
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            preload: Config.preload, // 预加载脚本，用于注入自定义的 JS 代码
            nodeIntegration: true, // 允许使用 Node.js API
            // nodeIntegrationInWorker: true, // 允许在 web worker 中使用 Node.js API
            webSecurity: false, // 关闭 web 安全限制，允许加载本地资源
            // enableRemoteModule: true, // 允许使用 remote 模块
            contextIsolation: true, // 允许使用 contextIsolation


        },
        // alwaysOnTop: true, // 窗口置顶
        frame: true, // 无边框
        transparent: false, // 透明背景
        resizable: true, // 可调整大小
    })

    // mainWindow.autoHideMenuBar = true; // 隐藏菜单栏
    mainWindow.menuBarVisible = false; // 隐藏菜单栏
    mainWindow.maximizable = true; // 禁止最大化窗口
    mainWindow.minimizable = true; // 禁止最小化窗口
    mainWindow.fullScreenable = true; // 允许全屏

    // 加载 index.html
    if (isDev||true) {
        mainWindow.loadURL('http://localhost:5173/') // 开发环境下使用 webpack-dev-server 启动
    } else {
        mainWindow.loadFile('dist/index.html') // 此处跟electron官网路径不同，需要注意
    }

    globalShortcut.register('CommandOrControl+T', function() {
        // console.log('截图')
        if(mainWindow.isAlwaysOnTop()){
            mainWindow.setAlwaysOnTop(false)
        }else {
            mainWindow.setAlwaysOnTop(true)
        }

    })


    // 打开开发工具
    mainWindow.webContents.openDevTools()

    return mainWindow
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(async () => {
    await session.defaultSession.loadExtension(
        path.join(__dirname, './extensions/nhdogjmejiglipccpnnnanhbledajbpd_6.6.3_chrome.zzzmh.cn.crx'),
        // allowFileAccess is required to load the devtools extension on file:// URLs.
        { allowFileAccess: true }
    )
    const mainWindow = createWindow()
    require("./controller/Index")(app,mainWindow);


    app.on('activate', function () {
        // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
        // 打开的窗口，那么程序会重新创建一个窗口。
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
    app.on("maximize", function () {
        // 窗口最大化时，隐藏菜单栏
        mainWindow.menuBarVisible = false;
    })
    app.on("unmaximize", function () {
        // 窗口恢复时，显示菜单栏
        mainWindow.menuBarVisible = true;
    })
    app.on("before-quit", function () {
        // 程序退出前，注销全局快捷键
        globalShortcut.unregisterAll()
    })
})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在
// 任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit()
})